package com.blog.cmrpersonalblog.dto.category.request;

import com.blog.cmrpersonalblog.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 分类查询请求
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CategoryQueryRequest extends BasePageRequest {

    /**
     * 分类名称（模糊查询）
     */
    private String name;

    /**
     * 分类状态 0-禁用 1-启用
     */
    private Integer status;

    /**
     * 开始时间
     */
    private String startTime;

    /**
     * 结束时间
     */
    private String endTime;

    /**
     * 是否包含文章统计信息
     */
    private Boolean includeArticleCount = false;

    /**
     * 构造函数，设置默认排序
     */
    public CategoryQueryRequest() {
        super();
        setDefaultSort("id", "asc");
    }

    /**
     * 验证排序字段是否有效
     */
    public boolean isValidSortField() {
        String field = getSortField();
        if (field == null) {
            return false;
        }
        return field.equals("id") ||
               field.equals("sort_order") ||
               field.equals("name") ||
               field.equals("create_time") ||
               field.equals("update_time");
    }

    /**
     * 获取安全的排序字段
     */
    public String getSafeSortField() {
        return isValidSortField() ? getSortField() : "id";
    }
}
